const {
	app,
	BrowserWindow,
	Menu
} = require('electron');

// 保持对window对象的全局引用，如果不这么做的话，当JavaScript对象被
// 垃圾回收的时候，window对象将会自动的关闭
let win;

function createWindow() {
	// 创建浏览器窗口。
	win = new BrowserWindow({
		width: 1200,
		height: 800,
		webPreferences: {
			nodeIntegration: true,	//启用nodejs
			enableRemoteModule: true,	//在electron 10以后的版本，默认是关闭的
            contextIsolation: false, //Electron 12版本之后将默认启用它，使用require()时要关闭contextIsolation
		},
	});

	// 加载index.html文件
	win.loadFile('index.html');

	// 打开开发者工具
	//win.webContents.openDevTools();

	// 当 window 被关闭，这个事件会被触发。
	win.on('closed', () => {
		// 取消引用 window 对象，如果你的应用支持多窗口的话，
		// 通常会把多个 window 对象存放在一个数组里面，
		// 与此同时，你应该删除相应的元素。
		win = null;
	});
}

// Electron 会在初始化后并准备
// 创建浏览器窗口时，调用这个函数。
// 部分 API 在 ready 事件触发后才能使用。
app.on('ready', createWindow);

// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
	// 在 macOS 上，除非用户用 Cmd + Q 确定地退出，
	// 否则绝大部分应用及其菜单栏会保持激活。
	if (process.platform !== 'darwin') {
		app.quit();
	}
});



/**
 * 自定义菜单
 */
const template = [{
	label: '工具',
	submenu: [{
		label: '重新加载',
		click: (item, focusedWindow) => {
			if (focusedWindow) {
				if (focusedWindow.id === 1) {
					BrowserWindow.getAllWindows().forEach(function(mainWin) {
						if (mainWin.id > 1) {
							mainWin.close()
						}
					})
				}
				focusedWindow.reload()
			}
		}
	}, {
		label: '开发者工具',
		click: function(item, focusedWindow) {
			if (focusedWindow) {
				focusedWindow.toggleDevTools()
			}
		}
	}]
}]
Menu.setApplicationMenu(Menu.buildFromTemplate(template));